﻿using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;
using vite_entity.Entities;

namespace vite_entity.EntityTypeConfig
{
    public class SysRole_TypeConfig : IEntityTypeConfiguration<SysRole>
    {
        public void Configure(EntityTypeBuilder<SysRole> entity)
        {
            entity.HasKey(e => e.Id).HasName("PRIMARY");

            entity
                .ToTable("sys_role", tb => tb.HasComment("角色表"))
                .UseCollation("utf8mb4_general_ci");

            entity.HasIndex(e => e.Code, "uk_code").IsUnique();

            entity.HasIndex(e => e.Name, "uk_name").IsUnique();

            entity.Property(e => e.Id).HasColumnName("id");
            entity.Property(e => e.Code)
                .HasMaxLength(32)
                .HasComment("角色编码")
                .HasColumnName("code");
            entity.Property(e => e.CreateBy)
                .HasComment("创建人 ID")
                .HasColumnName("create_by");
            entity.Property(e => e.CreateTime)
                .HasComment("更新时间")
                .HasColumnType("datetime")
                .HasColumnName("create_time");
            entity.Property(e => e.DataScope)
                .HasComment("数据权限(0-所有数据 1-部门及子部门数据 2-本部门数据3-本人数据)")
                .HasColumnName("data_scope");
            entity.Property(e => e.IsDeleted)
                .HasComment("逻辑删除标识(0-未删除 1-已删除)")
                .HasColumnName("is_deleted");
            entity.Property(e => e.Name)
                .HasMaxLength(64)
                .HasDefaultValueSql("''")
                .HasComment("角色名称")
                .HasColumnName("name");
            entity.Property(e => e.Sort)
                .HasComment("显示顺序")
                .HasColumnName("sort");
            entity.Property(e => e.Status)
                .HasDefaultValueSql("'1'")
                .HasComment("角色状态(1-正常 0-停用)")
                .HasColumnName("status");
            entity.Property(e => e.UpdateBy)
                .HasComment("更新人ID")
                .HasColumnName("update_by");
            entity.Property(e => e.UpdateTime)
                .HasComment("创建时间")
                .HasColumnType("datetime")
                .HasColumnName("update_time");
        }
    }
}
